﻿
using Elysium.Demo.Ventas;
using SIIE_ERP.BaseDatos.Configuracion;
using SIIE_ERP.BaseDatos.Configuracion.Empresa.PagoLicencias;
using SIIE_ERP.Codigo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;


namespace Elysium.Demo.Configuracion.PagoLicencias
{
    /// <summary>
    /// Interaction logic for CompraLicencias.xaml
    /// </summary>
    public partial class CompraLicencias : UserControl
    {
        private UsuarioActivo _sesion;

        private double CostoTotal;

        public const double PRECIO_ADMIN_MES = 699;
        public const double PRECIO_USER_MES = 199;

        class UsuarioLicencia
        {
            public string UserName { get; set; }
            public string Nombre { get; set; }
            public string Email { get; set; }
            public DateTime Licencia { get; set; }
            public DateTime NuevaLicencia { get; set; }
            public double TotalPagar { get; set; }

            public UsuarioLicencia(string UserName, string Nombre, string Email, DateTime Licencia, DateTime NuevaLicencia, double TotalPagar)
            {
                this.UserName = UserName;
                this.Nombre = Nombre;
                this.Email = Email;
                this.Licencia = Licencia;
                this.NuevaLicencia = NuevaLicencia;
                this.TotalPagar = TotalPagar;
            }
        }

        public CompraLicencias(ref UsuarioActivo usuario)
        {
            InitializeComponent();
            this._sesion = usuario;
            CargarDatos();
        }

        private void CargarDatos()
        {
            if (DatosDataGrid != null)
            {
                DatosDataGrid.Items.Clear();
                DataTable dt_MisUsers = dbo_Sec_Usuario.Get_Users_Licencia();

                CostoTotal = 0;

                for (int i = 0; i < dt_MisUsers.Rows.Count; i++)
                {
                    double PrecioAux = 0;
                    if (dt_MisUsers.Rows[i]["UserName"].ToString().Equals("admin"))
                        PrecioAux = PRECIO_ADMIN_MES;
                    else
                        PrecioAux = PRECIO_USER_MES;

                    DateTime FechaAux = DateTime.Parse(SIIE_ERP.BaseDatos.CypherClass.DescifrarTexto(dt_MisUsers.Rows[i]["Genero"].ToString()));
                    if (DateTime.Now > FechaAux)
                    {
                        DateTime FechaCombina = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, FechaAux.Hour, FechaAux.Minute, FechaAux.Second);
                        FechaAux = FechaCombina;
                    }

                    if ((bool)RadioButton_Mensual.IsChecked)
                    {
                        DatosDataGrid.Items.Add(new UsuarioLicencia(dt_MisUsers.Rows[i]["UserName"].ToString(), dt_MisUsers.Rows[i]["Nombre"].ToString(), dt_MisUsers.Rows[i]["Email"].ToString(), DateTime.Parse(SIIE_ERP.BaseDatos.CypherClass.DescifrarTexto(dt_MisUsers.Rows[i]["Genero"].ToString())), FechaAux.AddMonths(1), PrecioAux));
                        CostoTotal += PrecioAux;
                    }
                    else
                    {
                        DatosDataGrid.Items.Add(new UsuarioLicencia(dt_MisUsers.Rows[i]["UserName"].ToString(), dt_MisUsers.Rows[i]["Nombre"].ToString(), dt_MisUsers.Rows[i]["Email"].ToString(), DateTime.Parse(SIIE_ERP.BaseDatos.CypherClass.DescifrarTexto(dt_MisUsers.Rows[i]["Genero"].ToString())), FechaAux.AddYears(1), PrecioAux * 11));
                        CostoTotal += (PrecioAux * 11);
                    }

                }

                Label_TotalPagar.Text = CostoTotal.ToString("C");
            }
        }


        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("ComprarLicencia.htm", "Ayuda");
            Ayuda.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Ayuda.ShowDialog();
        }

        private void RadioButton_Mensual_Checked(object sender, RoutedEventArgs e)
        {
            if (RadioButton_Mensual != null)
                CargarDatos();
        }

        private void RadioButton_Anual_Checked(object sender, RoutedEventArgs e)
        {
            if (RadioButton_Anual != null)
                CargarDatos();
        }

        private void Button_CrearPago_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.DialogResult dialogResult =
                                System.Windows.Forms.MessageBox.Show(
                                    "Se le cobrarán " + CostoTotal.ToString("C") + " por las licencias de estos usuarios",
                                    "Pago Usuario",
                                    System.Windows.Forms.MessageBoxButtons.YesNo
                                );
            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {
                dbo_Cat_Empresa_PagoDomiciliado cat_pago = new dbo_Cat_Empresa_PagoDomiciliado(_sesion.RFC, _sesion.UserName);
                DataTable dt_pago = cat_pago.Get_Empresa_PagoDomiciliado_Por_RFC();

                if (dt_pago.Rows.Count == 0)
                {
                    MessageBox.Show("Favor de ingresar sus datos bancarios para poder realizar este cobro en la sección de Pagos Domiciliados");
                    return;
                }

                if (!WebServicesClass.CheckConnection())
                {
                    MessageBox.Show("Se necesita conexión a internet para realizar el pago de las licencias");
                    return;
                }

                string Nombre = dt_pago.Rows[0]["Nombre"].ToString();
                string Apellidos = dt_pago.Rows[0]["Apellidos"].ToString();
                string Numero_Tarjeta = dt_pago.Rows[0]["Numero_Tarjeta"].ToString();
                string CP = dt_pago.Rows[0]["CP"].ToString();
                string CodigoSeguridad = dt_pago.Rows[0]["CodigoSeguridad"].ToString();
                string FechaVenc_mm = dt_pago.Rows[0]["FechaVenc_mm"].ToString();
                string FechaVenc_aa = dt_pago.Rows[0]["FechaVenc_aa"].ToString();
                string Telefono = dt_pago.Rows[0]["Telefono"].ToString();
                string Celular = dt_pago.Rows[0]["Celular"].ToString();
                string Dir_Calle = dt_pago.Rows[0]["Dir_Calle"].ToString();
                string Dir_Colonia = dt_pago.Rows[0]["Dir_Colonia"].ToString();
                string Dir_CiudadPueblo = dt_pago.Rows[0]["Dir_CiudadPueblo"].ToString();
                string Desc_Estado = dt_pago.Rows[0]["Desc_Estado"].ToString();
                string Desc_Pais = dt_pago.Rows[0]["Desc_Pais"].ToString();

                if (
                    String.IsNullOrEmpty(Nombre) ||
                    String.IsNullOrEmpty(Apellidos) ||
                    String.IsNullOrEmpty(Numero_Tarjeta) ||
                    String.IsNullOrEmpty(CP) ||
                    String.IsNullOrEmpty(CodigoSeguridad) ||
                    String.IsNullOrEmpty(FechaVenc_mm) ||
                    String.IsNullOrEmpty(FechaVenc_aa) ||
                    String.IsNullOrEmpty(Telefono) ||
                    String.IsNullOrEmpty(Celular) ||
                    String.IsNullOrEmpty(Dir_Calle) ||
                    String.IsNullOrEmpty(Dir_Colonia) ||
                    String.IsNullOrEmpty(Dir_CiudadPueblo) ||
                    String.IsNullOrEmpty(Desc_Estado) ||
                    String.IsNullOrEmpty(Desc_Pais)
                )
                {
                    MessageBox.Show("Los datos bancarios que ha ingresado están incompletos, favor de verificar.");
                    return;
                }

                if (WebServicesClass.CreateAndSavePay_PagoFacil
                (
                    CostoTotal,
                    _sesion.RFC,
                    Nombre,
                    Apellidos,
                    Numero_Tarjeta,
                    CodigoSeguridad,
                    CP,
                    FechaVenc_mm,
                    FechaVenc_aa,
                    Telefono,
                    Celular,
                    Dir_Calle,
                    Dir_Colonia,
                    Dir_CiudadPueblo,
                    Desc_Estado,
                    Desc_Pais,
                    "Pago de Ajuste de Usuario"
                ))
                {
                    MessageBox.Show("Se ha realizado el pago exitosamente. Podrá ver los cambios la próxima vez que inicie sesión.");
                }
                else
                {
                    MessageBox.Show("No se ha podido realizar el pago ya que sus datos bancarios son incorrectos, favor de verificar.");
                    return;
                }
            }
            else
            {
                System.Windows.MessageBox.Show("Se ha cancelado la compra de licencia de este usuario");
                return;
            }

            //////////////   Actualizamos licencias

            foreach (UsuarioLicencia u in DatosDataGrid.Items)
            {
             //   dbo_Sec_Usuario.Update_FechaLicencia(u.UserName, u.NuevaLicencia);
            }

            CargarDatos();
        }

        private void ButtonRegresar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                (this.Parent as ScrollViewer).Content = null;
            }
            catch (Exception)
            {

            }
        }

        private void EliminarContacto_Click(object sender, RoutedEventArgs e)
        {


        }


    }
}
